'use strict';
const Service = require('egg').Service;
class UserService extends Service {
  /**
     *  创建用户
     *  @param {*} payload
     */

  async create(payload) {
    const { ctx } = this;
    // console.log(ctx.request.body);
    payload.password = await this.ctx.genHash(payload.password);
    return ctx.model.User.create(payload);
  }
  /**
    * 删除用户
    * @param {*} _id
    */
  async destroy(_id) {
    const { ctx } = this;
    const user = await ctx.service.user.find(_id);
    if (!user) {
      ctx.throw(404, 'user not fond');
    }
    return ctx.model.User.findByIdAndDelete(_id);
  }
  /**
   * 删除多个用户
   * @param {*} payload
   */
  async removes(payload) {
    return this.ctx.model.User.remove({ _id: { $in: payload } });
  }
  /**
  * 修改用户
  * @param {*} _id
  * @param {*} payload
  */
  async update(_id, payload) {
    const { ctx, service } = this;
    const user = await ctx.service.user.find(_id);
    if (!user) {
      ctx.throw(404, 'user not found');
    }
    return ctx.model.User.findByIdAndUpdate(_id, payload);
  }
  /**
   * 根据手机号查找
   * @param {*} mobile
   */
  async findByMobile(mobile) {
    console.log(mobile);

    return this.ctx.model.User.findOne({ mobile });
  }
  /*
   *查找所有用户
   *get
   */
  async findMany() {
    return this.ctx.model.User.find();
  }
  /**
   * 查找用户
   * @param {*} id
   */
  async find(id) {
    return this.ctx.model.User.findById(id);
  }
  /**
   * 更新用户信息
   * @param {*} id
   * @param {*} values
   */
  async findByIdAndUpdate(id, values) {
    return this.ctx.model.User.findByIdAndUpdate(id, values);
  }
}
module.exports = UserService;
